빌드 자동화
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
빌드 자동화는 소프트웨어 빌드 작업을 자동화하는 프로세스를 의미한다. Makefiles를 통해 역사적으로 이루어졌으며, 오늘날에는 빌드 자동화 유틸리티와 빌드 자동화 서버의 두 가지 주요 도구 유형이 있다. 빌드 자동화는 지속적 통합 및 지속적 전달(CI/CD)을 구현하는 데 필수적이며, 단순하고 반복적인 작업을 자동화하여 시간과 비용을 절약하고, 일관된 빌드 프로세스를 제공하며, 핵심 인력 및 개인용 컴퓨터에 대한 의존도를 줄이는 등의 이점을 제공한다.
더 읽어볼만한 페이지
- 빌드 자동화 - GNU 빌드 시스템
GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다. - 빌드 자동화 - MSBuild
MSBuild는 마이크로소프트에서 개발한 빌드 자동화 도구로서, 프로젝트 파일에 기술된 대상을 실행하여 빌드 과정을 자동화하며, Team Foundation 빌드와 연동하여 팀 빌드 환경을 구성하는 데 사용된다.
빌드 자동화 | |
---|---|
개요 | |
이름 | 빌드 자동화 |
유형 | 소프트웨어 개발 프로세스 |
목적 | 소프트웨어 빌드 프로세스 자동화 |
관련 활동 | 컴파일 링크 테스트 |
상세 정보 | |
설명 | 빌드 자동화는 소프트웨어 빌드 및 관련 프로세스를 자동화하는 것을 의미한다. 컴파일, 링크, 테스트, 기타 프로세스들을 포함한다. |
이점 | 개발 속도 향상 일관성 유지 오류 감소 배포 용이성 증가 |
도구 | Make Ant Maven Gradle Jenkins 트래비스 CI 깃허브 액션 |
고려 사항 | |
복잡성 | 빌드 프로세스의 복잡성에 따라 자동화 난이도가 달라질 수 있다. |
의존성 관리 | 외부 라이브러리 및 프레임워크 의존성을 효과적으로 관리해야 한다. |
테스트 | 자동화된 빌드 프로세스에 통합 테스트를 포함하는 것이 중요하다. |
지속적 통합 | 빌드 자동화는 지속적 통합 시스템의 중요한 부분이다. |
2. 빌드 자동화 도구
역사적으로 빌드 자동화는 makefile을 통해 이루어졌다. 오늘날에는 보통 다음 2가지 분류의 도구들이 있다.[7]
- 빌드 자동화 유틸리티
- 빌드 자동화 서버
자동화 수준에 따라 다음과 같이 분류할 수 있다.
- Makefile 레벨
- * Make 기반 도구
- * Make 이외의 도구를 기반으로 하는 도구
- 빌드 스크립트(또는 Makefile) 생성 도구
- 지속적 통합 도구
- 구성 관리 도구
- 메타 빌드 도구 또는 패키지 관리 도구
- 기타
각 분류에 포함된 소프트웨어 목록은 여기에서 확인할 수 있다.
셸 스크립트와 같은 일부 도구는 작업 지향적인 선언적 프로그래밍으로, 일반적으로 최소한의 조건부 논리로 수행할 명령 시퀀스를 인코딩한다.
Make와 같은 일부 도구는 제품 지향적으로, 구성된 종속성을 기반으로 제품, 즉 대상을 빌드한다.[2]
2. 1. 빌드 자동화 유틸리티
이 범주에는 Make, Rake, Cake, MSBuild, Ant, Maven, Gradle, BuildMaster 등의 유틸리티가 포함된다.[5] 이 도구들의 주요 목적은 소스 코드 컴파일 및 링크 등의 실행을 통해 빌드 결과물을 생성하는 것이다.빌드 자동화 유틸리티를 활용하면 단순하고 반복적인 작업을 자동화할 수 있다. 도구를 사용하면 지정된 목표에 도달하기 위해, 정확하고 지정된 순서로 각 작업을 실행하는 프로세스를 계산해 준다. 작업 지향형과 제품 지향형, 두 종류의 빌드 도구가 있다. 작업 지향형 도구는 네트워크 의존성을 특정 작업 집합의 관점에서 기술하는 반면, 제품 지향형 도구는 도구가 생성하는 제품의 관점에서 기술한다.
우분투 같은 리눅스 계열 빌드 환경이나 QT 같은 통합 애플리케이션 개발 환경 또는 크로미움 브라우저 소스 코드는 make라는 빌드 소프트웨어를 기본 지원하고 있다. 그러나 여러 목적 파일들을 링커(linker)하는 대규모의 복잡한 소스 코드 환경에서는 각각의 목적 파일을 컴파일하는 make를 만들어주고 설정하는 상위 make 파일이 의존성과 효율성 면에서 필요하다. 따라서 이러한 일련의 계층적이고 조직적인 빌드 자동화를 매크로적으로 구현할 소프트웨어가 요구된다. 대표적이고 전통적인 빌드 자동화(makemake) 소프트웨어로는 cmake가 있다.
빌드 자동화 도구는 비대화형 인터페이스를 통해 소프트웨어 빌드 작업을 순차적으로 수행할 수 있게 해준다.[2]
2. 2. 빌드 자동화 서버
빌드 서버는 빌드를 실행하도록 설정된 서버이다. 개인용 컴퓨터와 달리, 서버는 보다 일관되고 사용 가능한 빌드 환경을 제공한다.전통적으로 빌드 서버는 개인용 컴퓨터로 사용되는 대신 공유 자원으로 사용되는 로컬 컴퓨터였다. 오늘날에는 빌드를 위한 많은 클라우드 컴퓨팅, 서비스형 소프트웨어(SaaS) 웹 사이트가 있다.
빌드 서버가 없으면 빌드는 일반적으로 개발자의 개인용 컴퓨터 사용에 의존하게 되며, 다음과 같은 여러 가지 단점이 있다.
- 빌드 방법을 아는 개발자가 휴가 중일 수 있다.
- 개발자의 컴퓨터에 빌드를 방해하는 문제가 있을 수 있다.
- 개발자의 컴퓨터에 빌드를 제대로 수행하는 것과 충돌하는 다른 소프트웨어가 설치되어 있을 수 있다.
지속적 통합 서버는 비교적 빈번한 방식으로, 종종 각 코드 커밋 시 빌드하도록 설정된 빌드 서버이다. 빌드 서버는 ARA 도구나 ALM 도구에 통합될 수도 있다.
일반적인 빌드 트리거 옵션은 다음과 같다.
- 요청 시: 사용자가 요청
- 예약: 야간 빌드 등
- 커밋 시: 버전 관리 시스템에 대한 모든 커밋 시 빌드
빌드 서버는 지속적 통합 서버가 등장하기 훨씬 이전부터 존재해 왔지만, 통합 서버는 일반적으로 지속적 통합 서버와 동의어인 반면, 빌드 서버는 ARA 도구나 ALM 도구에 통합되는 경우가 있다.[7]
'''서버 종류'''[7]
- '''온디맨드 자동화 서버''': 사용자가 명령줄에서 스크립트를 실행한다.
- '''스케줄 자동화 서버''': 지속적 통합 서버가 나이틀리 빌드를 실행한다.
- '''트리거 방식 자동화 서버''': 지속적 통합 서버가 버전 관리 시스템에 커밋할 때마다 빌드를 실행한다.
3. 빌드 자동화의 이점
- 장기적으로 시간과 비용을 절약할 수 있다.
- 지속적 통합 및 딜리버리를 가능하게 한다.
- 보다 일관된 빌드 프로세스를 제공한다.
- 빌드 프로세스를 최적화하여 시간과 중복 작업을 줄일 수 있다.
- 핵심 인력 및 개인용 컴퓨터에 대한 의존도를 줄인다.
- 빌드 이력 수집을 자동화할 수 있다.
참조
[1]
서적
A history of Modern computing
https://archive.org/[...]
The MIT Press
2003
[2]
서적
Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps
The Pragmatic Programmers.
2004
[3]
서적
Work Item Management with IBM Rational ClearQuest and Jazz: A customization Guide
IBM Press
2011
[4]
웹사이트
Archived copy
http://www.denverjug[...]
2008-09-19
[5]
서적
A history of Modern computing
The MIT Press
2003
[6]
서적
Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps
The Pragmatic Programmers.
2004
[7]
서적
A history of Modern computing
The MIT Press
2003
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com